#!/bin/bash

# Android 模拟器停止脚本
# 用于关闭正在运行的 Android 模拟器

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印带颜色的消息
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否有模拟器在运行
check_emulator_running() {
    adb devices | grep "emulator-" | grep "device$" > /dev/null 2>&1
    return $?
}

# 停止所有模拟器
stop_all_emulators() {
    local emulators=($(adb devices | grep "emulator-" | awk '{print $1}'))
    
    if [ ${#emulators[@]} -eq 0 ]; then
        print_warning "没有正在运行的模拟器"
        return 1
    fi
    
    print_info "找到 ${#emulators[@]} 个正在运行的模拟器"
    
    for emulator in "${emulators[@]}"; do
        print_info "正在关闭模拟器: $emulator"
        adb -s "$emulator" emu kill
    done
    
    sleep 2
    
    if ! check_emulator_running; then
        print_success "所有模拟器已关闭"
        return 0
    else
        print_warning "部分模拟器可能仍在运行"
        return 1
    fi
}

# 停止指定的模拟器
stop_emulator() {
    local emulator_id=$1
    print_info "正在关闭模拟器: $emulator_id"
    adb -s "$emulator_id" emu kill
    sleep 2
    print_success "模拟器 $emulator_id 已关闭"
}

# 主函数
main() {
    echo "=================================="
    echo "  Android 模拟器停止脚本"
    echo "=================================="
    echo ""
    
    if ! command -v adb &> /dev/null; then
        print_error "adb 命令未找到，请确保已安装 Android SDK"
        exit 1
    fi
    
    if ! check_emulator_running; then
        print_warning "没有正在运行的模拟器"
        exit 0
    fi
    
    # 显示正在运行的模拟器
    print_info "正在运行的模拟器："
    adb devices | grep "emulator-"
    echo ""
    
    # 获取运行中的模拟器列表
    local emulators=($(adb devices | grep "emulator-" | awk '{print $1}'))
    
    if [ ${#emulators[@]} -eq 1 ]; then
        # 只有一个模拟器，直接关闭
        stop_emulator "${emulators[0]}"
    else
        # 多个模拟器，让用户选择
        echo "请选择操作："
        echo "1) 关闭所有模拟器"
        echo "2) 选择特定模拟器关闭"
        read -p "请输入选项 (1/2): " choice
        
        case $choice in
            1)
                stop_all_emulators
                ;;
            2)
                print_info "请选择要关闭的模拟器:"
                select emulator in "${emulators[@]}"; do
                    if [ -n "$emulator" ]; then
                        stop_emulator "$emulator"
                        break
                    fi
                done
                ;;
            *)
                print_error "无效的选项"
                exit 1
                ;;
        esac
    fi
    
    # 检查是否还有模拟器进程
    if pgrep -f "emulator" > /dev/null; then
        print_warning "检测到模拟器进程仍在运行"
        read -p "是否强制终止所有模拟器进程？(y/N): " answer
        if [[ $answer =~ ^[Yy]$ ]]; then
            print_info "强制终止模拟器进程..."
            pkill -9 -f "emulator"
            print_success "已强制终止所有模拟器进程"
        fi
    fi
}

# 运行主函数
main


